feat(code-mappings): Wire up API integration for code-mappings upload#3209
Open
romtsn wants to merge 13 commits intorz/feat/code-mappings-git-inferencefrom
Open
feat(code-mappings): Wire up API integration for code-mappings upload#3209romtsn wants to merge 13 commits intorz/feat/code-mappings-git-inferencefrom
romtsn wants to merge 13 commits intorz/feat/code-mappings-git-inferencefrom
Conversation
Contributor
|
Add a new `code-mappings` subcommand group with an `upload` subcommand that reads and validates a JSON file of code mappings. This is the first step toward CLI support for bulk code mapping uploads to Sentry.
684caab to
912da39
Compare
f5ab182 to
37fbb57
Compare
This was referenced Mar 12, 2026
37fbb57 to
5720ec2
Compare
912da39 to
95e8814
Compare
5720ec2 to
bbc4d47
Compare
szokeasaurusrex
approved these changes
Mar 18, 2026
Member
szokeasaurusrex
left a comment
There was a problem hiding this comment.
lgtm, added some minor optional improvements
Add descriptive help text explaining what code mappings are and how they work. Replace unwrap with expect for the required path argument. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Automatically detect repository name and default branch from the local git repo when --repo or --default-branch are not provided. Respects SENTRY_VCS_REMOTE config, falling back to best-effort remote detection. Extract find_best_remote() into vcs.rs to deduplicate remote selection logic shared with git_repo_base_repo_name_preserve_case().
When --repo is provided but --default-branch is not, the code no longer requires a git remote to be present. Branch inference gracefully falls back to 'main' when no git repo or remote is available. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
e405066 to
8f9babe
Compare
Use get_repo_from_remote_preserve_case instead of get_repo_from_remote to avoid lowercasing the repository name, which would cause mismatches with Sentry's case-sensitive API. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add bulk_upload_code_mappings() API method and BulkCodeMappingsRequest/ Response data types. Wire up the upload command to authenticate, call the bulk endpoint, and display results in a table with summary counts. Exit with code 1 if any mappings fail.
3d14593 to
e288070
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
The bulk code-mappings endpoint is scoped to an organization, so a 404 should report "organization not found" rather than generic "resource not found", consistent with other org-scoped endpoints. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Simplify the status match per review feedback and extract the table building logic into a print_results_table function. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
| pub repository: String, | ||
| pub default_branch: String, | ||
| pub mappings: Vec<BulkCodeMapping>, | ||
| } |
Member
There was a problem hiding this comment.
m: Because of how we use this in #3210, I think this struct should probably use borrowed, instead of owned, types. This would avoid cloning in #3210
pub struct BulkCodeMappingsRequest<'a> {
pub project: &'a str,
pub repository: &'a str,
pub default_branch: &'a str,
pub mappings: &'a [BulkCodeMapping],
}
romtsn
added a commit
that referenced
this pull request
Mar 20, 2026
_#skip-changelog_ Add the `sentry-cli code-mappings upload` subcommand group and the `upload` subcommand with file parsing and validation. This is the first in a stack of 4 PRs to support bulk uploading code mappings from a JSON file — useful for Java/Android multi-module projects that need dozens of mappings. This PR adds: - Command scaffold following the `repos`/`deploys` pattern - JSON file reading and validation (empty arrays, empty stackRoot/sourceRoot) - CLI args: positional `PATH`, `--repo`, `--default-branch` - Help and no-subcommand trycmd integration tests Stack: **#3207** → #3208 → #3209 → #3210 Backend PRs: getsentry/sentry#109783, getsentry/sentry#109785, getsentry/sentry#109786 Closes getsentry/sentry-android-gradle-plugin#1076 Closes getsentry/sentry-android-gradle-plugin#1077 --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
70ddd86 to
6dae115
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

#skip-changelog
Connect the
code-mappings uploadcommand to the bulk code mappings APIendpoint (
POST /api/0/organizations/{org}/code-mappings/bulk/).Adds:
bulk_upload_code_mappings()method onAuthenticatedApisrc/api/data_types/code_mappings.rsStack: #3207 → #3208 → #3209 → #3210
Backend PRs: getsentry/sentry#109783, getsentry/sentry#109785, getsentry/sentry#109786
Closes getsentry/sentry-android-gradle-plugin#1079